﻿#ifndef APPCONFIG_H
#define APPCONFIG_H
#include <string>
#include "../nlohmann/json.hpp"
#include <map>

class AppConfig
{
public:
    static AppConfig& getInstance();
    // 传入一个json序列来初始化全局变量
    bool init(const std::string& setting);

    // 获取全局设置
    std::string globalValue(const std::string& key);
    // 获取运行时设置
    std::string runtimeValue(const std::string& key);

    // 设置局部设置
    void setRuntimeValue(const std::string& key, const std::string value);
    // 设置全局设置
    void setGlobalValue(const std::string& key, const std::string value);

    // 获取全局设置文件
    nlohmann::json getGlobalStore();

    // 删除拷贝构造函数和拷贝赋值操作符
    AppConfig(AppConfig const&) = delete;
    AppConfig& operator=(AppConfig const&) = delete;

private:
    AppConfig();
    // 用于存储全局设置
    nlohmann::json globalStore;
    // 用于存储运行设置
    std::map<std::string, std::string> runtimeStore;

};

#endif // APPCONFIG_H
